#pragma once

#include <functional>


volatile float f;

class Test_if
{
public:
	Test_if(){};

	void function()
	{
		if (b)
			++f;
		else
			--f;
	}
	bool b;
};

class Test_virtual
{
public:
	Test_virtual(){ b = ((rand() % 2) != 0); }

	virtual void function()
	{
	}
	bool b;
};

class Test_virtual_A : public Test_virtual
{
public:
	Test_virtual_A() : Test_virtual(){};

	virtual void function()
	{
		++f;
	}
};

class Test_virtual_B : public Test_virtual
{
public:
	Test_virtual_B() : Test_virtual(){};

	virtual void function()
	{
		--f;
	}
};


class Test_lambda
{
public:
	Test_lambda(){}
	std::function<void()> function;
};